#! /usr/bin/python
# -*- coding:utf-8 -*-

#Projeto Final da Disciplina de Laboratório de Programação I
#Equipe de desenvolvimento: Gabriella Barbosa Bezerra, Isaac Nunes de Oliveira, Luan José Barbosa da Silva e Silas Emanoel de Holanda Santos. 
#Orientador: Professor Mário Hozano - UFAL - CAMPUS ARAPIRACA

import pygame, sys, random, time # importa os módulos de pygame
from pygame.locals import *

pygame.init() # Onde o jogo começa

tela = pygame.display.set_mode((640,480),0,32) #Disposições da tela, tamanho, tipo e quantidade de cores
pygame.display.set_caption('Espaço Sideral') #Nome da Janela
pygame.key.set_repeat(10, 100)
pygame.mouse.set_visible(True) # Torna a seta do mouse visível

fundo = 'fundo.png' #Figuras a serem carregadas no jogo.
nave = 'nave.gif'
cena1 = 'estrela.png'
combus = 'combus.png'
pont_ast1 = 20
pont_ast2 = 40
pont_ast3 = 30
pont_ext1 = 50
pont_ext = 'ponto_ext.png'
asteroide_1 = '1.png'
asteroide_2 = '2.png'
asteroide_3 = '3.png'
bala = 'cursor.png'
som_bala = pygame.mixer.Sound('bum.wav') # suporta .ogg e .wav
tipoLetra1 = pygame.font.SysFont('arial', 60) #Define o tipo da letra e o tamanho dela
branco = (255,255,255) # Cor da letra que aparece no menu em formato RGB.
tipoLetra2 = pygame.font.SysFont('arial', 24)
tipoLetra3 = pygame.font.SysFont('arial', 16)
coordenadax = 5
coordenaday = 210   #Coordenadas dos personagens do jogo.
coordastro1x = 600
coordastro1y = 400
coordastro2x = 730
coordastro2y = 100
coordastro3x = 850
coordastro3y = 200
coordcombus4x = 1300
coordcombus4y = 250
coordpontx = 1600
coordponty = 320
mover = 7 # movimento da nave a cada alteração de movimento
alt_tiro = 7 # alteração do movimento do tiro.
player = pygame.Rect(coordenadax, coordenaday, 110, 90)
cont_pontos = 0

velocidade = pygame.time.Clock()
esperar = True

def espera():
    esperar = True
    while esperar:
        for evento in pygame.event.get():
            if evento.type ==KEYDOWN:
                esperar = False
            
def Menu():  
    Cenario_inicial = pygame.image.load(fundo)
    tela.blit(Cenario_inicial,(0,0)) # Desenha na tela o cenário do menu.
    mensagem2 = "Para iniciar aperte uma tecla!"
    texto2 = tipoLetra2.render(mensagem2, True, branco)
    tela.blit(texto2,(150,292,350,30))
    pygame.display.update()
    espera()
  
Menu()

esperar = True
while esperar:
    som_bala.play(-1) #  Indica o número de repetições
    pygame.mouse.set_visible(False) # Torna a seta do mouse invisível
    cena = pygame.image.load(cena1).convert_alpha() #converte em um tipo de cor mais rápido de ser impresso na tela.
    aviao = pygame.image.load(nave).convert()
    tt = pygame.transform.scale(aviao, (110, 90))
    asteroide1 = pygame.image.load(asteroide_1).convert_alpha()
    asteroide2 = pygame.image.load(asteroide_2).convert_alpha()
    asteroide3 = pygame.image.load(asteroide_3).convert_alpha()
    combus1 = pygame.image.load(combus).convert_alpha()
    pontoplus = pygame.image.load(pont_ext).convert_alpha()
    cursor1 = pygame.image.load(bala).convert_alpha()
    tela.blit(cena, (0,0))
    tela.blit(tt, player)
    coordastro1x -= 8
    coordastro2x -= 7
    coordastro3x -= 6
    coordcombus4x -= 7
    coordpontx -= 10
    if coordastro1x < -10:
        coordastro1x = 600
    if coordastro2x < -10:  # Alterações nas coordenados dos personagens de acordo com cada iteração
        coordastro2x = 730
        coordastro2y += 50
        if coordastro2y < 400:
            coordastro2y = 100
    if coordastro3x < -10:
        coordastro3x = 850
        coordastro3y += 50
        if coordastro3y < 400:
            coordastro3y = 200
    if coordcombus4x < -10:
        coordcombus4x = 4000
        coordcombus4y +=50
        if coordcombus4y < 400:
            coorcombus4y = 250
    if coordpontx < -10:
        coordpontx = 5000
        coordponty += 50
        if coordponty < 400:
            coordponty = 320
    tela.blit(asteroide1, (coordastro1x, coordastro1y))
    tela.blit(asteroide2, (coordastro2x, coordastro2y))
    tela.blit(asteroide3, (coordastro3x, coordastro3y))
    tela.blit(combus1, (coordcombus4x, coordcombus4y))  # Desenha o personagem na tela de acordo com sua nova posição.
    tela.blit(pontoplus, (coordpontx, coordponty))
    pontuador = tipoLetra3.render(("score:"), True, branco)
    pontos = tipoLetra3.render(str(cont_pontos),True, branco)
    tela.blit(pontuador, (20, 10, 40, 50))
    tela.blit(pontos, (65, 10, 40, 50))
    tela.blit(combus1, (100, 0, 40, 50)) #Bolinha referente a perda e/ou ganho de combustível
    velocidade.tick(120)
    for evento in pygame.event.get():
        if evento.type == QUIT:
            esperar == False
            sys.exit(0)
        if evento.type == KEYDOWN:
            if evento.key == K_ESCAPE:
                esperar == False
    apertar = pygame.key.get_pressed()
    if apertar[K_LEFT]:
        if coordenadax > 0:
            player.left -=mover
            coordenadax -= mover
    if apertar[K_RIGHT]:
        if coordenadax < 530:
            player.right +=mover
            coordenadax += mover
    if apertar[K_DOWN]:
        if coordenaday < 390:
            player.top +=mover
            coordenaday += mover
    if apertar[K_UP]:
        if coordenaday > 0:
            player.top -= mover
            coordenaday -= mover
    if apertar[K_SPACE]:
        coordabalax, coordabalay = coordenadax, coordenaday
        #while coordabalax > -20 and coordabalax < 600:
        tela.blit(tt, player)
        tela.blit(cursor1, (coordabalax+76, coordabalay+43))
        coordabalax += alt_tiro
            #pygame.display.flip()
    pygame.display.update()

pygame.display.update()


